package de.plushnikov.val;

import lombok.val;
import org.junit.Test;

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;

public class ValIssue105 {
    private static class AccountUserEntity {

    }

    private static class User {
        public boolean isLegacyUser() {
            return true;
        }
    }

    private static class SomeMapper {
        public User map(AccountUserEntity entity, Class clazz) throws IllegalAccessException, InstantiationException {
            return new User();
        }
    }

    private SomeMapper mapper = new SomeMapper();

    @Test
    public void isLegacy_mapObjectWithDTO_returnFalse() throws Exception {
        val entity = new AccountUserEntity(); // <-- this row gives an "Incopatible types" asking for a User

        val dto = mapper.map(entity, User.class); // <-- while this row gives an "Incopatible types" asking for a AccountUserEntity

        assertThat(dto.isLegacyUser(), is(false));
    }
}
